package tech.yunjing.train.service;

import tech.yunjing.train.entity.UserInfo;
import tech.yunjing.train.service.exception.*;

/**
 * purpose:注册接口
 * Created by 吕祥 on 2017/6/9.
 */
public interface RegisterService<T> {

    /**
     * 模拟发送短信验证码(发送到前台，正常是不能返回到前台的)
     * @return 生成的验证码
     */
    boolean verifyUserAccount(String userAccount) throws VerifyUserAccountException;

    /**
     * 模拟发送短信验证码(发送到前台，正常是不能发送到前台的)
     */
    String sendVerificationCode();

    /**
     * 校验注册信息并保存
     * @param userAccount 用户账号
     * @param userPassword 用户密码
     * @param sex 性别
     * @param idNumber 身份证号
     * @param site 住址
     * @param verificationCode 验证码
     * @return 注册的用户信息
     */
    UserInfo verifyUserInfoAndSave(String userAccount, String userPassword,
                                   String sex, String idNumber, String site, String verificationCode)
                                           throws VerifyUserAccountException, VerifyUserPasswordException,
            VerifySexException, VerifyIdNumberException, VerifySiteException,VerifyCodeException;


    /**
     * 根据账号修改密码
     * @param userAccount 账号
     * @param userPassword 密码
     * @return 修改是否成功提示
     */
    String updateOneUserAccount(String userAccount, String userPassword, String updatePassword);

    /**
     * 逻辑删除用户
     * @param userAccount 用户账号
     * @return 是否成功提醒
     */
    String removeOneUserInfo(String userAccount, String userPassword);

    /**
     * 根据userAccount查询一条数据
     * @param userAccount 用户账号
     * @return 用户信息对象
     */
     UserInfo findByUserAccount(String userAccount, String userPassword);

}
